const API = require('../../utils/api.js')
Page({
  data: {
    activeTab: 'all',
    fileList: [],
    searchKeyword: '',
    // 添加最近活动数据
    recentActivities: [
      {
        id: 1,
        type: 'print',
        title: '打印文档 合同文件.pdf',
        time: '2分钟前',
        color: '#4caf50' // 绿色
      },
      {
        id: 2,
        type: 'upload',
        title: '上传文件 财务报表.xlsx',
        time: '15分钟前',
        color: '#4caf50' // 绿色
      },
      {
        id: 3,
        type: 'collaborate',
        title: '团队协作 项目计划.docx',
        time: '1小时前',
        color: '#ff9800' // 橙色
      },
      {
        id: 4,
        type: 'modify',
        title: '修改文件 产品说明书.docx',
        time: '3小时前',
        color: '#2196f3' // 蓝色
      },
      {
        id: 5,
        type: 'download',
        title: '下载文件 销售报告.pptx',
        time: '昨天',
        color: '#9c27b0' // 紫色
      },
      {
        id: 6,
        type: 'share',
        title: '分享文件 技术方案.pdf',
        time: '2天前',
        color: '#2196f3' // 蓝色
      }
    ]
  },

  onLoad: function () {
    // 初始化页面数据
    this.loadFileList();
  },

  onShow: function() {
    // 页面显示时刷新数据
    this.loadFileList();
  },

  /**
   * 接收扫码页面传来的数据
   */
  onReady: function() {
    let that = this;
    try {
      // 获取事件通道
      const eventChannel = this.getOpenerEventChannel();
      // 检查eventChannel是否存在并有on方法
      if (eventChannel && typeof eventChannel.on === 'function') {
        // 监听扫描结果更新事件
        eventChannel.on('updateScanResult', function(data) {
          if (data) {
            // 构建新的文件项
            const newFile = {
              id: data.id || 'CT' + new Date().getTime(),
              name: data.name || '扫描文件.pdf',
              icon: data.imageUrl || '/images/pic.png',
              date: '刚刚添加',
              progress: '100%',
              creator: data.producer ? data.producer.name : '系统',
              createTime: data.produceTime || util.formatTime(new Date()),
              contact: data.producer ? data.producer.tel : '未知',
              fileInfo: '文件ID: ' + (data.id || '未知'),
              specification: data.specification || '',
              materials: data.materials || '',
              category: data.category || ''
            };
            
            // 添加到文件列表头部
            let fileList = that.data.fileList;
            fileList.unshift(newFile);
            
            that.setData({
              fileList: fileList,
              activeTab: 'recent' // 切换到最近上传标签
            });
            
            // 提示用户
            wx.showToast({
              title: '新文件已添加',
              icon: 'success',
              duration: 2000
            });
          }
        });
      }
    } catch (error) {
      console.log('获取事件通道失败', error);
    }
  },

  // 加载文件列表
  loadFileList: function() {
    const app = getApp();
    
    // 检查是否有全局文件列表
    if (app.globalData && app.globalData.fileList && app.globalData.fileList.length > 0) {
      // 直接使用全局文件列表
      this.setData({
        fileList: app.globalData.fileList,
        activeTab: 'recent' // 切换到最近上传标签
      });
      return;
    }
    
    // 如果没有全局文件列表，使用示例数据
    if (this.data.fileList.length === 0) {
      // 示例数据
      const sampleFile = {
        id: 'CT2025051001',
        name: '合同文件.pdf',
        icon: '/images/pic.png',
        date: '已归档',
        progress: '98%',
        creator: '张三',
        createTime: '2025-05-10 14:30',
        contact: '13800138000',
        fileInfo: '合同编号: CT2025051001, 共10页'
      };
      
      setTimeout(() => {
        this.setData({
          fileList: [sampleFile]
        });
        
        // 初始化全局文件列表
        if (!app.globalData.fileList) {
          app.globalData.fileList = [sampleFile];
        }
      }, 500);
    }
    
    // 检查是否有全局的最后扫描结果
    if (app.globalData && app.globalData.lastScanResult) {
      const scanResult = app.globalData.lastScanResult;
      
      // 构建新的文件项
      const newFile = {
        id: scanResult.id || 'CT' + new Date().getTime(),
        name: scanResult.name || '扫描文件.pdf',
        icon: scanResult.imageUrl || '/images/pic.png',
        date: '刚刚添加',
        progress: '100%',
        creator: scanResult.producer ? scanResult.producer.name : '系统',
        createTime: scanResult.produceTime || util.formatTime(new Date()),
        contact: scanResult.producer ? scanResult.producer.tel : '未知',
        fileInfo: scanResult.batchNo ? ('批次号：' + scanResult.batchNo) : ('文件ID: ' + (scanResult.id || '未知')),
        specification: scanResult.specification || '',
        materials: scanResult.materials || '',
        category: scanResult.category || '',
        status: scanResult.status || '未验证',
        location: scanResult.location || ''
      };
      
      // 添加到文件列表头部，避免重复添加
      let fileList = this.data.fileList;
      let exists = false;
      for (let i = 0; i < fileList.length; i++) {
        if (fileList[i].id === newFile.id) {
          exists = true;
          break;
        }
      }
      
      if (!exists) {
        fileList.unshift(newFile);
        this.setData({
          fileList: fileList,
          activeTab: 'recent' // 切换到最近上传标签
        });
        
        // 更新全局文件列表
        app.globalData.fileList = fileList;
        
        // 清除全局扫描结果，避免重复添加
        app.globalData.lastScanResult = null;
        
        // 提示用户
        wx.showToast({
          title: '新文件已添加',
          icon: 'success',
          duration: 2000
        });
      }
    }
  },

  // 切换标签页
  switchTab: function(e) {
    const tab = e.currentTarget.dataset.tab;
    this.setData({
      activeTab: tab
    });
    
    // 根据标签过滤文件列表
    this.filterFilesByTab(tab);
  },
  
  // 根据标签过滤文件
  filterFilesByTab: function(tab) {
    const app = getApp();
    if (!app.globalData || !app.globalData.fileList) return;
    
    let filteredList = [];
    
    switch(tab) {
      case 'all':
        filteredList = app.globalData.fileList;
        break;
      case 'recent':
        // 最近添加的文件（例如最新的5个）
        filteredList = app.globalData.fileList.slice(0, 5);
        break;
      case 'processed':
        // 已处理的文件，根据status判断
        filteredList = app.globalData.fileList.filter(file => file.status === '已验证');
        break;
      case 'pending':
        // 待处理的文件，根据status判断
        filteredList = app.globalData.fileList.filter(file => file.status !== '已验证');
        break;
      default:
        filteredList = app.globalData.fileList;
    }
    
    this.setData({
      fileList: filteredList
    });
  },

  // 搜索输入
  onSearchInput: function(e) {
    this.setData({
      searchKeyword: e.detail.value
    });
    // 可以在这里实现实时搜索
    if (e.detail.value) {
      // 执行搜索逻辑
      this.searchFiles(e.detail.value);
    } else {
      // 如果搜索框为空，显示当前标签的所有文件
      this.filterFilesByTab(this.data.activeTab);
    }
  },

  // 搜索确认
  searchConfirm: function() {
    // 执行搜索逻辑
    this.searchFiles(this.data.searchKeyword);
  },
  
  // 搜索文件
  searchFiles: function(keyword) {
    if (!keyword) return;
    
    const app = getApp();
    if (!app.globalData || !app.globalData.fileList) return;
    
    // 搜索文件名、创建者、批次号等信息
    const filteredList = app.globalData.fileList.filter(file => {
      return file.name.indexOf(keyword) >= 0 || 
             file.creator.indexOf(keyword) >= 0 || 
             file.fileInfo.indexOf(keyword) >= 0 ||
             (file.specification && file.specification.indexOf(keyword) >= 0) ||
             (file.materials && file.materials.indexOf(keyword) >= 0) ||
             (file.category && file.category.indexOf(keyword) >= 0);
    });
    
    this.setData({
      fileList: filteredList
    });
  },

  // 选择文件
  chooseFile: function() {
    // 微信小程序限制了文件选择功能，可以提示用户或使用其他替代方案
    wx.showModal({
      title: '提示',
      content: '微信小程序暂不支持直接选择文件，请上传图片或使用扫描功能',
      confirmText: '上传图片',
      success: (res) => {
        if (res.confirm) {
          this.chooseImage();
        }
      }
    });
  },

  // 选择图片
  chooseImage: function() {
    wx.chooseImage({
      count: 1,
      sizeType: ['original', 'compressed'],
      sourceType: ['album', 'camera'],
      success: (res) => {
        // 上传图片
        const tempFilePaths = res.tempFilePaths;
        this.uploadFile(tempFilePaths[0]);
      }
    });
  },

  // 扫描产品包装
  scanPackage: function() {
    // 跳转到扫描页面
    wx.navigateTo({
      url: '/packageB/scanCode/scanCode?type=customer'
    });
  },

  // 上传文件
  uploadFile: function(filePath) {
    wx.showLoading({
      title: '上传中...',
    });
    
    // 模拟上传，实际项目应调用上传API
    setTimeout(() => {
      wx.hideLoading();
      wx.showToast({
        title: '上传成功',
        icon: 'success'
      });
      
      // 刷新文件列表
      this.loadFileList();
    }, 1500);
  },

  // 查看文件详情
  viewFileDetails: function(e) {
    const fileId = e.currentTarget.dataset.id;
    // 跳转到文件详情页面
    wx.navigateTo({
      url: `/packageB/fileDetail/fileDetail?id=${fileId}`
    });
  },

  // 显示更多操作
  showMoreActions: function(e) {
    const fileId = e.currentTarget.dataset.id;
    wx.showActionSheet({
      itemList: ['查看详情', '下载文件', '重新打印', '删除文件'],
      success: (res) => {
        switch(res.tapIndex) {
          case 0:
            // 查看详情
            wx.navigateTo({
              url: `/packageB/fileDetail/fileDetail?id=${fileId}`
            });
            break;
          case 1:
            // 下载文件
            this.downloadFile(e);
            break;
          case 2:
            // 重新打印
            wx.showModal({
              title: '确认重新打印',
              content: '确定要重新打印该文件吗？',
              success: (modalRes) => {
                if (modalRes.confirm) {
                  wx.showToast({
                    title: '打印任务已提交',
                    icon: 'success'
                  });
                }
              }
            });
            break;
          case 3:
            // 删除文件
            this.deleteFile(e);
            break;
        }
      }
    });
  },

  // 下载文件
  downloadFile: function(e) {
    const fileId = e.currentTarget.dataset.id;
    wx.showLoading({
      title: '下载中...',
    });
    
    // 模拟下载，实际项目应调用下载API
    setTimeout(() => {
      wx.hideLoading();
      wx.showToast({
        title: '下载成功',
        icon: 'success'
      });
    }, 1500);
  },

  // 删除文件
  deleteFile: function(e) {
    const fileId = e.currentTarget.dataset.id;
    const app = getApp();
    
    // 显示确认对话框
    wx.showModal({
      title: '确认删除',
      content: '确定要删除该文件吗？',
      confirmText: '删除',
      confirmColor: '#E53E3E',
      success: (res) => {
        if (res.confirm) {
          // 用户点击确认，删除文件
          let fileList = app.globalData.fileList;
          
          // 找到要删除的文件索引
          const index = fileList.findIndex(file => file.id === fileId);
          
          if (index !== -1) {
            // 从数组中删除文件
            fileList.splice(index, 1);
            
            // 更新全局数据
            app.globalData.fileList = fileList;
            
            // 保存到本地缓存
            wx.setStorageSync('fileList', fileList);
            
            // 更新页面数据
            this.setData({
              fileList: this.filterFilesByTab(this.data.activeTab) || fileList
            });
            
            // 显示成功提示
            wx.showToast({
              title: '删除成功',
              icon: 'success'
            });
          }
        }
      }
    });
  },

  // 快速搜索（扫码功能）
  quickSearch: function() {
    wx.getSetting({
      success: (res) => {
        if(res.authSetting['scope.camera'] == null){
          wx.authorize({
            scope: 'scope.camera',
            success(){
              wx.navigateTo({
                url: '/packageB/scanCode/scanCode?type=customer'
              });
            },
            fail() {
              wx.showToast({
                title: '小程序未获得相机授权，无法查询产品信息哦',
                icon: 'none',
                duration: 2000
              });
            }
          });
        }else if(res.authSetting['scope.camera'] == false){
          wx.showModal({
            content: "小程序未获得相机授权，无法查询产品信息哦",
            confirmText: "去授权",
            success(res) {
              if(res.confirm){
                wx.openSetting();
              }
            }
          });
        }else if(res.authSetting['scope.camera'] == true){
          wx.navigateTo({
            url: '/packageB/scanCode/scanCode?type=customer'
          });
        }
      }
    });
  }
}); 